<?php
class upload{
	var $files;
	var $size;
	var $upurl;
	var $config;
	
	function __construct()
	{
		//parent::__construct();
		
		global $Config;
		$this->config=$Config;
		$this->size=$this->config['upfileSize'];
		$this->upurl=$this->config['upfileDirectory'];
	}
	
	function upMusic($file){
	    $this->files=$file;
	    
	    if ($this->files["name"])
	    {
	    #允许的文件扩展名
	    $allowed_types = array('mp3');
		
	    #正则表达式匹配出上传文件的扩展名
	    preg_match('|\.(\w+)$|', $this->files["name"], $ext);
		
	    #转化成小写
	    $ext = strtolower($ext[1]);
	    #判断是否在被允许的扩展名里
	    //echo $ext;
	    if(!in_array($ext, $allowed_types)){
	    	
	       return false;
	    //die('不被允许的文件类型');
	    }
	    
        $psize=$this->size; //图片上传大小单位K
	    if ($this->files["size"] > $psize*1024)
	        {
	           return false;
			}
	        	
	        if ($this->files["error"] > 0)
	        {
	            return false;
	       }
			
    		$dir="".$this->upurl."music".DS.date("Y")."/".date("m")."/".date("d")."/";
    		$filename=date("YmdGis").rand(100,999).".".$ext;  //生成文件名
    		
    		mkdir($dir,0777,true);
    
    		if (file_exists($this->upurl . $filename)){
    		    return false;
    		}
    			
    		move_uploaded_file($this->files["tmp_name"],$dir.$filename);
    		//缩略图处理
    
    		//$re['file_dir']=$dir.$filename;
    		return $dir.$filename;;
		}
	}
	
	function upImg($file,$is_thumb=true)
	{
		$this->files=$file;
		
		if ($this->files["name"])
		{
			#允许的文件扩展名
			$allowed_types = array('jpg', 'gif', 'png');
			
			#正则表达式匹配出上传文件的扩展名
			preg_match('|\.(\w+)$|', $this->files["name"], $ext);
			
			#转化成小写
			$ext = strtolower($ext[1]);
			#判断是否在被允许的扩展名里
			//echo $ext;
			if(!in_array($ext, $allowed_types)){
			
			  return false;
			  //die('不被允许的文件类型');
			}

			$psize=$this->size; //图片上传大小单位K
			if ($this->files["size"] > $psize*1024)
			{
				return false;
			}
			
			if ($this->files["error"] > 0)
			{
				return false;
			}

			$dir=$this->upurl."images".DS.date("Y")."/".date("m")."/".date("d")."/";
			$filename=date("YmdGis").rand(100,999).".".$ext;  //生成文件名

			mkdir($dir,0777,true);
			
			//判断文件是否存在
			if (file_exists($this->upurl . $filename)){
				//$err=new err("图片已存在!");$errinfo->errfun();exit;
				return false;
			}
			
			move_uploaded_file($this->files["tmp_name"],$dir.$filename);
			//缩略图处理
			if ($is_thumb){
				$this->img2thumb($dir.$filename,$dir."t_".$filename,245,0);
				$this->img2thumb($dir.$filename,$dir."s_".$filename,75,0);
				$this->img2thumb($dir.$filename,$dir."b_".$filename,800,0);
			}
			$re['photo']=$filename;
			$re['photo_dir']=$dir;
			return $re;
		}
		
	}
	//缩略图
	
	/**
	 * 生成缩略图
	* @param string     源图绝对完整地址{带文件名及后缀名}
	* @param string     目标图绝对完整地址{带文件名及后缀名}
	* @param int        缩略图宽{0:此时目标高度不能为0，目标宽度为源图宽*(目标高度/源图高)}
	* @param int        缩略图高{0:此时目标宽度不能为0，目标高度为源图高*(目标宽度/源图宽)}
	* @param int        是否裁切{宽,高必须非0}
	* @param int/float  缩放{0:不缩放, 0<this<1:缩放到相应比例(此时宽高限制和裁切均失效)}
	* @return boolean
	*/
	function img2thumb($src_img, $dst_img, $width = 75, $height = 75, $cut = 0, $proportion = 0)
	{
		if(!is_file($src_img))
		{
			return false;
		}
		$ot = $this->fileext($dst_img);
		$otfunc = 'image' . ($ot == 'jpg' ? 'jpeg' : $ot);
		$srcinfo = getimagesize($src_img);
		$src_w = $srcinfo[0];
		$src_h = $srcinfo[1];
		$type  = strtolower(substr(image_type_to_extension($srcinfo[2]), 1));
		$createfun = 'imagecreatefrom' . ($type == 'jpg' ? 'jpeg' : $type);
		
		if (!function_exists($createfun)){
			return false;
		}
	
		$dst_h = $height;
		$dst_w = $width;
		$x = $y = 0;
	
		/**
		 * 缩略图不超过源图尺寸（前提是宽或高只有一个）
		 */
		if(($width> $src_w && $height> $src_h) || ($height> $src_h && $width == 0) || ($width> $src_w && $height == 0))
		{
			$proportion = 1;
		}
		if($width> $src_w)
		{
			$dst_w = $width = $src_w;
		}
		if($height> $src_h)
		{
			$dst_h = $height = $src_h;
		}
	
		if(!$width && !$height && !$proportion)
		{
			return false;
		}
		if(!$proportion)
		{
			if($cut == 0)
			{
				if($dst_w && $dst_h)
				{
					if($dst_w/$src_w> $dst_h/$src_h)
					{
						$dst_w = $src_w * ($dst_h / $src_h);
						$x = 0 - ($dst_w - $width) / 2;
					}
					else
					{
						$dst_h = $src_h * ($dst_w / $src_w);
						$y = 0 - ($dst_h - $height) / 2;
					}
				}
				else if($dst_w xor $dst_h)
				{
					if($dst_w && !$dst_h)  //有宽无高
					{
						$propor = $dst_w / $src_w;
						$height = $dst_h  = $src_h * $propor;
					}
					else if(!$dst_w && $dst_h)  //有高无宽
					{
						$propor = $dst_h / $src_h;
						$width  = $dst_w = $src_w * $propor;
					}
				}
			}
			else
			{
				if(!$dst_h)  //裁剪时无高
				{
					$height = $dst_h = $dst_w;
				}
				if(!$dst_w)  //裁剪时无宽
				{
					$width = $dst_w = $dst_h;
				}
				$propor = min(max($dst_w / $src_w, $dst_h / $src_h), 1);
				$dst_w = (int)round($src_w * $propor);
				$dst_h = (int)round($src_h * $propor);
				$x = ($width - $dst_w) / 2;
				$y = ($height - $dst_h) / 2;
			}
		}
		else
		{
			$proportion = min($proportion, 1);
			$height = $dst_h = $src_h * $proportion;
			$width  = $dst_w = $src_w * $proportion;
		}
	
		$src = $createfun($src_img);
		$dst = imagecreatetruecolor($width ? $width : $dst_w, $height ? $height : $dst_h);
		$white = imagecolorallocate($dst, 255, 255, 255);
		imagefill($dst, 0, 0, $white);
	
		if(function_exists('imagecopyresampled'))
		{
			imagecopyresampled($dst, $src, $x, $y, 0, 0, $dst_w, $dst_h, $src_w, $src_h);
		}
		else
		{
			imagecopyresized($dst, $src, $x, $y, 0, 0, $dst_w, $dst_h, $src_w, $src_h);
		}
		$otfunc($dst, $dst_img);
		imagedestroy($dst);
		imagedestroy($src);
		return true;
	}
	
	function fileext($file)
	{
		return pathinfo($file, PATHINFO_EXTENSION);
	}
}

?>